#ifndef __WORK_QUE_H__
#define __WORK_QUE_H__
#include "head.h"

// 客户队列节点
// typedef struct tag_node {
//     int new_fd;
//     char filename[100]; // GETS或PUTS的文件名
//     int code; // code为0代表是根，code为正，code是当前路径
//     int state; // 判断是GETS操作还是PUTS操作
//     int user_id; // 哪一个用户发来的GETS或PUTS请求
//     off_t offset; // 为GETS服务，传递的偏移值
//     struct tag_node *pNext;
// } Node_t, *pNode_t;

typedef struct tag_node {
    int new_fd;
    struct tag_node *pNext;
} Node_t, *pNode_t;

// 客户队列
typedef struct {
    pNode_t que_head, que_tail; // 队列头和队列尾
    int que_capacity; // 队列最大长度
    int que_size; // 当前队列大小
    pthread_mutex_t mutex; // 队列锁
} Que_t, *pQue_t;

// 初始化客户队列
void que_init(pQue_t pq, int capacity);

// 放元素到队列
void que_set(pQue_t pq, pNode_t pnew); 

// 拿队列元素
void que_get(pQue_t pq, pNode_t *p); 

#endif

